/**
 * - 这里面的东西不要乱删  你可以添加  尽量不要删除  页面你可以删除重新剪  我说的删除值得是删除文件  删除方法文件等
 * - 按我的想法 架子有了   可以直接用   
 * - 思路：
 * 1. 登录页
 * 2. 首页先不写  功能太多
 * 3. 顶部 navbar 例如 logo 面包屑 放大 全屏 还有有上交的退出等  - 方法 全屏 功能可以先不写 但是图标要先加上
 *    因为这些功能不重要 也不属于主任务
 * 4. 左侧菜单栏 建好对应的 一级菜单 和 二级菜单 建好对应的页面及路由
 * 5. 你先写这些把
 * 
 * 疑问：
 * 还有啥疑问嘛先写吧
 * 记住  个人信息应该放到 vuex里  还有就是  你的接口要封装  他这个已经给你封装好了  你可以看看封装逻辑 
 * 然后按自己的需求改一改
 * 哪些数据应该放到vuex里 个人信息等  需要全局访问的  你想想你人资里都放了啥  
 * 记住 千万别看源码   不然你到时候一工作  或者想你现在这样  给你个项目你啥思路也没有  要自己写  百度 不会的问我
 * 就怕我思路万一错了  不就写错了吗  不回着你不用担心  思路错就算错着实现了也行 基本上所有的项目思路都是一样的
 * 怕有些逻辑我忘了      你就先写  不会了百度  再不会问我
 * 
 * 我对你的要求  个人信息 存 vuex  登录退出 写在 vuex 里的 actions   他都给你写好了   你只需要改改 看看逻辑就好了
 * 懂了吗就这样吧 先看axios封装  再看 登录  先看看他现在的是怎么走的  然后再改
 * 干嘛 你要干嘛  搜索  vue-amdin-template  作者  花裤衩
 * 
 * 不要看源码   记住  当项目经理给你一个原型或者让你仿照一个网站写的时候  你是什么也没有的  你可以通过
 * 右击来看图片
 * 
 * 像这种的  他是个svg也就相当于一个图片  但是你没有那个svg文件 
 * 可以先给一个盒子 大小跟他一样  然后给个背景颜色 当作图片  然后弄好了之后
 * 再去 阿里矢量库找一个图片扔进去就行了
 * 
 * 问题来了   是不是你每个 img标签上都要写宽高100%   这个时候就要有自己的公共样式文件
 * 定义一个类名  wh100 你只要给他加个类名就好了  懂了吗  弄一个全局样式文件把
 * 全局样式文件  并不是之这个页面用  我考你的事  自己的全局样式文件 
 * 
 * 你这样写是对的   然后带你看一下 框架啊   你看他这里  有这么多全局样式文件 对吧   但是 mian.js里只引入了 index.scss
 * 为什么 他其他的全局样式文件也会生效呢  你感觉事为啥  因为这里  你看  他用 scss 的引入语法  引入了其他的
 * 然后把这个本身的 index.scss 引入到 main里  所以其他的 也生效了  enen 
 * 
 * <div 属性顺序  建议： class | 动态class | 判断循环类 vue语法 | 自定义属性| 方法 | 动态style style在最后 ></div>
 * <div class="boxx" :class="{'boxx2': 1 === 1}" v-for="i in 3" v-if="true" :style="{color: red}" style="color: pink">
 * 我教你一边啊  思路  先复制自己需要的html  然后补全data里的数据  删除复制来不要的东西  或者先删除 后补充 data 知道了么恩
 * 你想干嘛添加图标  你看啊  他事在 input上添加图标 所以。。。  到这里时没问题的  然后考虑一个事情
 * 字段名应该时后的段顶的  而不是前端起的   知道我在说嘛  这个form收集的东西是要给后端的  
 * 假如后端这个登录接口还没写好 你可以先自己写   但是咱们这个
 * 项目后端接口已经写好了  所以？  工作当中假如后端还没有写这个接口  就要自己先随便写 最后后端给了接口 统一修改
 * 假如后端还没给你接口  你可以像现在这样随便定义 然后把前端的东西写完了  比如 表单校验之类的  
 * 然后该接口对接了在同一修改 懂？假如给了接口呢
 * 后端给你发接口地址  如 /frame/login 然后跟你说 post 需要传两个参数  一个时 username 时账号  一个是 password 是密码  
 * 然后你在回来改你的字段  有了接口传参的是后端说的牙  看进度  假如你前段已经写好了就剩对接口了
 * 你就和后端说  就说  登录接口账号你用 name 密码用 password接受   这样跟他说  我一直以为是用接口文档看呢
 * 显示  有的人写文档 有的不写哦  这个线这样 继续往下  假如你是先把前端代码写完了 然后后端跟你的不一样  让你改  你要搜索然后替换  不然会落下 dong?
 * 
 * 在这说吧   哪个 401了登录  登录接口是不应该传token的  因为你只有登陆了才传
 * 这不就登陆上了嘛 为啥  你看啊  你看  这是接口里的信息 上面是后端返回 下面是咱们的请求参数
 * 接口时请求通过的  后端给你返回了code码和 错误信息  他告诉你 登录失败用户名或密码不对
 * 然后咱们去看看成品的参数 获取账号密码在重新登录就好了
 * 你看图三  是他收集用户输入的账号密码  但是他调接口的时候 密码使用了md5加密的  就把收集的密码
 * 进行了加密 然后传给后端的  后端收到时候在利用解密获取到真正的密码进行登录 懂了吗哦
 * 这个应该就是 前端请求拦截器里做的 针对咱们的项目就要把这里改改了o
 * 你在干嘛 const res = response.data我的这个里面咋没有success message data
 * 
 * 这个知道为什么没有提示提示后端返回的错误信息 而是提示的 这个错误码  懂点了吗
 * 这是咱们理出里成自己想要的数据  你看后端返回
 * response 是后端返回的总数据  他成功了 有一个 statusText  
 * 我不知道他失败了 还有没有这个而字段 如果没有 就给他一个默认值  d
 * haiyou  还有啥不懂的我自及改吧  gaijia
 * 
 * 登录页没了  去看路由守卫  看这里  刚才的错误圆晕事  你本地有token 代表你登陆了   你登陆了之后是不可以去登录页的
 * 你可以看看路由前置守卫
 * 路由前置守卫  当你有token 的时候是不能去登录页的  所以 你在路由输入 login会强制让你去 / 也就是首页 懂了吗嗯嗯
 * 有啥w问题没有 这个布局我要改吗  可以先不改 这个不重要 最后在该
 * 这样写好吗  不建议  但是这样写也没问题  最后是  文件家  建议是这样   不过你那样写也没问题
 * 不是   你看着啊  登录等处的操作应该就是这样的
 * 我有酷狗vip微信号花0.88员元刚开的今天下吧了
 * 挺厉害牙哥哥 不列害  这一天就写了个 退出  和这三个图标  对呀  你下午开始写echarts写的挺快呀假如上班就写这点不合格把
 * 看项目经理跟不跟你说多久完成了  如果登录退出后端接口时写好的  前端框架也像现在这样  退出登录包含这个登录页  一下午 俩小时干完 然后摸一下午
 * 哦 我可能摸不到🐟了  一般项目经理不会说让你多久完成（俺们这种小公司  或者项目经理会让你预估多久完成）
 * 因为登录退出就是调两个接口   在家一个登录页  登录页也不复杂
 * 但是首页这几个echarts可以弄个一天或者两天  真的假的图标可以写这麽久 因为又不是专门干echarts的还得查文档
 * 最多也就两天了  页面写好  接口对接完  然后干一天莫一天  就算一天干不完 也不用加班  如果让你要时间 你要是要一天
 * 万一干不完还得自己加班  你要个两天他要是说多  就会说让你稍微快点  一天半吧  这样最起码你不会加班恩
 * 你感觉哪里合适呢感觉你刚写的反正不合适   你说的对   懂了吗额
 * 这个思路能看懂吗 恩  嗯嗯 建议你这样写  不然  标签多 内容多  接口逻辑之类的多  后期改回很麻烦
 * 哪 我上面的yeye西额    上面不用 两个图标写两个组件吗？？？？？？？？？？？
 * 你就先直接写在页面里吧 等你写完我在带你分成租价给你讲讲哦 kanbuchulai  她也不报错嗯嗯 先像你原先哪呢找吧 知道有这回事  最后在该okk
 * 
 * 哪里 v 想说啥 没事  我再看下啊  你有没有发现他俩除了数据一样剩下的都一样恩
 * 嗯嗯  先这么着把 有时间我再给你将  你这里写的静态页面是对的  如果涉及到调接口 你这么写有点繁琐恩
 * 
 * 教你表格怎么写  别用格式化
 * 
 * 先带你看 组件 1. 引入 正确写法如下 
 * import Footbar from './footbar'
 * 简写默认   ./aaa  下main是优先级  如果同时存在 就是 1  如果同时存在要引入vue就要写全路径  ./aaa/index.vue
 * 1. ./aaa/index.js
 * 2. ./aaa/index.vue
 * 懂点了吗恩  OKOK 0kk 还有啥问题吗 你看我写的有问题吗 就是右上角  看不出来啊  之前固定宽度还有  这回一改没了 看不出来 那为啥写死就能出来
 * 
 * 至于你说的省市联动 数据是后端返你的 或者前端提前写好的 在这个项目里 他是提前写好的 
 * 那这个不行 对于你来说太难了  你等我给你找吧  你先些别的恩
 * 
 * 有什么问题 就是搜索没反应那个  搜索你得把搜索关键字传给后端啊cuacua
 * 你的代码看着是穿了 但是实际上没有穿啊那就不是我的问题  屁  后端没有收到带你找错误把
 * 肯定是前端的错误  因为接口请求里没有传参数  
 * 因为  post传参数为data   get为params
 * 
 * 
 * 
 * 你说么  首先可以确定这些数据不是调接口获取回来的   他应该是死数据   就是前端写死的  然后你仔细看
 * 仔细看  是不是 虽然换页了  但是他的数据  都是这些  也就是 20 条
 * 换页  回来的也是 20条恩 嗯嗯  你就随便  你自己看看   看懂这个加载框怎么用的了吗恩   嗯嗯如果想要 好一点就加上 
 * 一般工作中会加上 对用户比较友好
 * 
 * 哪里啊  把这个名字换成 childs  试试呢  看懂了吗
 * 
 * 
 * 问题一：
 * 你的登录完成后没加跳转？  登录完成自动跳转啊  哪有登陆玩还在登录页啊   你说加了  但是刚才不是没跳吗  不是卡了  逻辑有问题
 *  - 先看第一个： 同步异步问题 
 *  - 看到有啥问题了吗 恩  你看右边俩图  执行顺序  一个是 
 *  - 执行顺序正确：调登录接口-接口token获取到村本地完成-跳转首页 对应图二
 *  - 执行顺序错误：调登录接口-还没存token但是走了跳转页面就会被路由前置守卫拦截-token获取成功存入 对应图一
 *  - 先说这个看懂没恩这个和第三个一样吧  知道为啥吗 要是知道就不和你说了  vuex里写了async  为啥调用还写
 *  - 懂点了吗  我感觉我说的不对  但是你可以先这么理解 可能不是特别理解  就是action 不是处理异步吗  但是调用还是得加async
 * 
 * 
 * 问题二：
 * 退出完成后是 删除 token  不是把他设置为空吧    刚才解决的是这个问题恩  这个解决了
 * 
 * 问题三：
 * 退出完成后应该跳转到登录页吧
 * 
 * 
*/


// demo - 01
// function fn() { // 模拟一个接口  两秒后会返回一个OK
//   return new Promise((resolve, reject) => {
//     setTimeout(() => {
//       console.log(5);
//       resolve('OK')
//     }, 2000)
//   })
// }

// async function fnn() {
//   const res = await fn()
//   console.log(res);
//   console.log(1);
//   console.log(2);
// }
// fnn()
// 记住  1. 方法不调用不会执行
// 记住  2. 定时器是异步函数  并不是因为他延迟执行所以才会被最后打印  而是因为 setTimeout 是个异步函数
// 你说最后打印啥 5 1 2   5 'OK' 1 2  大概能看懂点吗呢恩

